package com.chen;

import lombok.extern.slf4j.Slf4j;

import java.time.Duration;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;

import static cn.hutool.core.thread.ThreadUtil.sleep;

public class Main {
    public static void main(String[] args) {
//        // 创建两个Date对象
//        LocalDateTime date1 = LocalDateTime.of(2025, 3, 6, 15, 35, 32);
//        LocalDateTime date2 = LocalDateTime.now();
//        // 计算时间差值（毫秒）
//        Duration duration = Duration.between(date1, date2);
//        System.out.println(date1);
//        System.out.println(date2);
//        // 输出差值的小时数、分钟数和秒数
//        long hours = duration.toHours() % 24; // 获取小时数（24小时制内）
//        long minutes = duration.toMinutes() % 60; // 获取分钟数
//        long seconds = duration.getSeconds() % 60; // 获取秒数
//        // 使用 String.format 格式化时间
//        String formattedTime = String.format("%02d:%02d:%02d", hours, minutes, seconds);
//        System.out.println(formattedTime);
//        System.out.println("-----------");
//        int solvedProblems1 = 5;
//        Duration penalty1 = Duration.ofMinutes(10).plusSeconds(30); // 假设罚时为10分钟30秒
//
//        int solvedProblems2 = 4;
//        Duration penalty2 = Duration.ofMinutes(5).plusSeconds(45); // 假设罚时为5分钟45秒
//
//        // 计算分数
//        long score1 = calculateScore(solvedProblems1, penalty1);
//        long score2 = calculateScore(solvedProblems2, penalty2);
//        System.out.println(score1);
//        System.out.println(score2);
//        HashMap<Integer, String> hashMap = new HashMap<>();
//        hashMap.put(1,"1");
//        System.out.println(hashMap.get(1));
        Thread t1 = new Thread(() -> {
            sleep(1);
            System.out.println(2);
        }, "t1");
        t1.start();
        sleep(0.5);
        t1.interrupt();
        System.out.println(" 打断状态:" + t1.isInterrupted());
    }

    public static long calculateScore(int solvedProblems, Duration penalty) {
        // 将罚时转换为秒数
        long penaltySeconds = penalty.getSeconds(); // 这将忽略纳秒部分，如果需要更高精度，可以使用toMillis()然后除以1000

        // 注意：如果罚时可能超过Duration.ofSeconds(Long.MAX_VALUE)，则这里需要特殊处理
        // 但在实际竞赛环境中，罚时通常不会这么大
        // 计算分数
        long score = (long) ((solvedProblems * 1e9) + (1e9 - penaltySeconds));
        // 返回分数
        return score;
    }

}